<template>
  <Card title="成交占比" :loading="loading">
    <div ref="chartRef" :style="{ width, height }"></div>
  </Card>
</template>
<script lang="ts" setup>
import { Ref, ref, watch } from "vue";
import { Card } from "ant-design-vue";
import { useECharts } from "@/hooks/web/useECharts";

const props = defineProps({
  loading: Boolean,
  width: {
    type: String as PropType<string>,
    default: "100%",
  },
  height: {
    type: String as PropType<string>,
    default: "300px",
  },
});

const chartRef = ref<HTMLDivElement | null>(null);
const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>);

watch(
  () => props.loading,
  () => {
    if (props.loading) {
      return;
    }
    setOptions({
      tooltip: {
        trigger: "item",
      },

      series: [
        {
          name: "成交占比",
          type: "pie",
          radius: "80%",
          center: ["50%", "50%"],
          color: ["#5ab1ef", "#b6a2de", "#67e0e3", "#2ec7c9"],
          data: [
            { value: 500, name: "电子产品" },
            { value: 310, name: "服装" },
            { value: 274, name: "化妆品" },
            { value: 400, name: "家居" },
          ].sort(function (a, b) {
            return a.value - b.value;
          }),
          roseType: "radius",
          animationType: "scale",
          animationEasing: "exponentialInOut",
          animationDelay: function () {
            return Math.random() * 400;
          },
        },
      ],
    });
  },
  { immediate: true },
);
</script>
